System, method, and apparatus for building and rendering a message user interface in a group-based communication system

ABSTRACT

Embodiments of the present disclosure provide methods, systems, apparatuses, and computer program products for building and rendering a message user interface (UI) within a group-based communication interface of a group-based communication system, where the message UI is rendered to a client device based on a customizable block configuration and on customizable block data that is received from an external application.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.15/978,013, filed May 11, 2018, the entire contents of which areincorporated herein by reference.

BACKGROUND

Various messaging systems are available that allow an externalapplication developer to build and render a message user interface (UI).Applicant has identified a number of deficiencies and problemsassociated with conventional message UI building and renderingimplementations in messaging systems. Through applied effort, ingenuity,and innovation, many of these identified problems have been solved bydeveloping solutions that are included in embodiments of the presentdisclosure, many examples of which are described in detail herein.

BRIEF SUMMARY

Various embodiments of the present invention are directed to anapparatus configured for building and rendering a message UI within agroup-based communication interface of a group-based communicationsystem. In one embodiment, a computing entity or apparatus is configuredto receive, from an external application, user message data associatedwith a group-based communication interface to be rendered to a clientdevice. The apparatus is further configured to parse the user messagedata to identify a message UI triggering event, where the message UItriggering event is associated with the client device. In circumstanceswhere the message UI triggering event is identified among the usermessage data, the apparatus is further configured to determine, based onthe message UI triggering event, a customizable block configuration todefine the message UI that is rendered within the group-basedcommunication interface. The apparatus is further configured to transmita customizable block request to the external application associated withthe customizable block configuration. The apparatus is furtherconfigured to receive customizable block data from the externalapplication associated with the customizable block request. Further, theapparatus is configured to render the message UI within the group-basedcommunication interface based on the customizable block configurationand on the customizable block data.

The customizable block configuration optionally comprises a plurality ofblocks, where each block comprises a plurality of elements. Thecustomizable block request is optionally configured to comprise aplurality of block types, where each block type is associated with arespective block within the customizable block configuration. Thecustomizable block data received from the external applicationoptionally comprises a plurality of block arrays. Each block array isassociated with a respective block type and comprises a plurality ofelement values, where each element value is associated with an elementattribute.

The apparatus is optionally configured to render the message UI withinthe group-based communication interface based on the customizable blockconfiguration and the plurality of block arrays.

In one embodiment, the block type is optionally configured to comprise atext block type, a thumbnail block type, a divider block type, an imageblock type, a video block type, a meta block type, an action block type,a poll block type, a file block type, or a call block type. The textblock type is optionally associated with a text element, the thumbnailblock type is optionally associated with an image element, the dividerblock type is optionally associated with a divider element, the imageblock type is optionally associated with an image element or a textelement, the video block type is optionally associated with a videoelement, the meta block type is optionally associated with an imageelement or a text element, the action block type is optionallyassociated with a button element, a dropdown menu element or an overflowmenu element, the poll block type is optionally associated with an imageelement or a text element, the file block type is optionally associatedwith an image element or a text element, and the call block type isoptionally associated with a button element.

In another embodiment, the each of the button element, the dropdown menuelement, or the overflow menu element is optionally associated with aplurality of action element attributes comprising a color attribute oran action text attribute. The image element is optionally associatedwith a plurality of image element attributes comprising a sizeattribute.

Other embodiments include corresponding systems, methods, and computerprograms, configured to perform the operations of the apparatus, encodedon computer storage devices. The details of one or more embodiments ofthe subject matter described in this specification are set forth in theaccompanying drawings and the description below. Other features,aspects, and advantages of the subject matter will become apparent fromthe description, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

Having thus described the disclosure in general terms, reference willnow be made to the accompanying drawings, which are not necessarilydrawn to scale, and wherein:

FIG. 1 is a system architecture diagram of a group-based communicationsystem configured to practice embodiments of the present disclosure;

FIG. 2 is an exemplary schematic diagram of a group-based communicationserver according to one embodiment of the present disclosure;

FIG. 3 illustrates exemplary message UIs rendered within a group-basedcommunication interface associated with a group-based communicationchannel according to one embodiment of the present disclosure;

FIG. 4 illustrates an exemplary customizable block configurationdefining a message UI that is rendered within a group-basedcommunication interface according to one embodiment of the presentdisclosure;

FIG. 5 illustrates an exemplary flow diagram for building and renderinga message UI within a group-based communication interface according toone embodiment of the present disclosure; and

FIG. 6 illustrates an exemplary message UI building and renderingprocess executed by a client device, a group-based communication server,and an external application server according to one embodiment of thepresent disclosure.

DETAILED DESCRIPTION OF VARIOUS EMBODIMENTS

Various embodiments of the present disclosure now will be described morefully hereinafter with reference to the accompanying drawings, in whichsome, but not all embodiments of the disclosure are shown. Indeed, thedisclosure may be embodied in many different forms and should not beconstrued as limited to the embodiments set forth herein; rather, theseembodiments are provided so that this disclosure will satisfy applicablelegal requirements. The term “or” is used herein in both the alternativeand conjunctive sense, unless otherwise indicated. The terms“illustrative” and “exemplary” are used to be examples with noindication of quality level. Like numbers refer to like elementsthroughout.

Overview

Various embodiments of the disclosure generally relate to a method forbuilding and rendering a message UI within a group-based communicationinterface of a group-based communication system. According to thepresent disclosure, a message UI is generated for displaying devicerendered objects associated with a client device in a block-basedmanner. In embodiments, an external application developer may build themessage UI with block kits provided by a group-based communicationserver via transmitting customizable block data to the server. Throughreceiving customizable block data from an external application serverand determining a customizable block configuration to define the messageUI, the message UI may be generated and rendered to the client deviceassociated with the external application.

In the present disclosure, the block kits may provide multiple blocktypes and different elements associated with each block type. Based onthe provided block kits, the external application developer maydetermine each element value for designing how an element may berendered within each block. The customizable block configuration mayserve as a foundation or a template for an external applicationdeveloper to build the message UI. Therefore, the external applicationdeveloper may have a certain degree of autonomy to build its desiredmessage UI. The block kits provided by the group-based communicationserver may provide a certain counterbalance to that autonomy in thatsuch kits define the general parameters or blocks that may be used tobuild message UIs. This allows a group-based communication system toaddress a difficult technical problem by providing real-time externalapplication autonomy with respect to message UI content while ensuring agenerally consistent user experience.

Definitions

As used herein, the terms “data,” “content,” “digital content,” “digitalcontent object,” “information,” and similar terms may be usedinterchangeably to refer to data capable of being transmitted, received,and/or stored in accordance with embodiments of the present disclosure.Thus, use of any such terms should not be taken to limit the spirit andscope of embodiments of the present disclosure. Further, where acomputing device is described herein to receive data from anothercomputing device, it will be appreciated that the data may be receiveddirectly from another computing device or may be received indirectly viaone or more intermediary computing devices, such as, for example, one ormore servers, relays, routers, network access points, base stations,hosts, and/or the like, sometimes referred to herein as a “network.”Similarly, where a computing device is described herein to send data toanother computing device, it will be appreciated that the data may besent directly to another computing device or may be sent indirectly viaone or more intermediary computing devices, such as, for example, one ormore servers, relays, routers, network access points, base stations,hosts, and/or the like.

The term “client device” refers to computer hardware and/or softwarethat is configured to access a service made available by a server. Theserver is often (but not always) on another computer system, in whichcase the client device accesses the service by way of a network. Clientdevices may include, without limitation, smart phones, tablet computers,laptop computers, wearables, personal computers, enterprise computers,and the like.

“Group-based” is used herein to refer to a system, channel, message, orvirtual environment that has security sufficient such that it isaccessible only to a defined group of users. The group may be defined bycommon access credentials such as those of an organization or commercialenterprise. Access may further be facilitated by a validated request tojoin or an invitation to join transmitted by one group member user toanother non-member user. Group identifiers (defined below) are used toassociate data, information, messages, etc., with specific groups.

The term “group-based communication system” refers to a communicationssoftware platform and associated hardware that is configured to supportand maintain a plurality of group-based communication interfaces and allassociated functionality. Group-based communication system users areorganized into organization groups (e.g., employees of differentcompanies may be separate organization groups) and each group interactswith the system via a respective group-based communication interface.For example, the group-based communication system might support, amongothers, a Slack Corporation group-based communication interface and anACME Corporation group-based communication interface. Examplegroup-based communication systems comprise supporting servers, clientdevices, and external application servers.

The term “group-based communication interface” refers to a virtualcommunications environment configured to facilitate user interactionwith a group-based communications system. Each group-based communicationinterface is accessible and viewable to a selected group of users, suchas a group of employees of a business or organization (e.g., the SlackCorp. interface would be accessible and viewable to the Slack employeeshowever the ACME Corporation group-based communication interface wouldnot be accessible and viewable to Slack employees). The group-basedcommunication interface includes a plurality of group-basedcommunication channels (e.g., a marketing channel, sales channel,accounting channel, etc.), which are defined below.

The term “group-based communication channel” refers to a virtualcommunications environment or feed that is configured to displaygroup-based messages posted by channel members (e.g., validated usersaccessing the environment using client devices) that are viewable onlyto the members of the group. The format of the group-based communicationchannel may appear differently to different members of the group-basedcommunication channel; however, the content of the group-basedcommunication channel (i.e., group-based messages) will be displayed toeach member of the group-based communication channel. For instance, acommon set of group-based messages will be displayed to each member ofthe respective group-based communication channel such that the contentof the group-based communication channel (i.e., group-based messages)will not vary per member of the group-based communication channel.

The terms “group-based communication channel identifier” or “channelidentifier” refer to one or more items of data by which a group-basedcommunication channel may be identified. For example, a group-basedcommunication channel identifier may comprise ASCII text, a pointer, amemory address, and the like.

The terms “group identifier” or “team identifier” refer to one or moreitems of data by which a group within a group-based communication systemmay be identified. For example, a group identifier may comprise ASCIItext, a pointer, a memory address, and the like.

The terms “organization identifier” or “business identifier” refer toone or more items of data by which an organization entity or a businessentity (e.g., employees of each company may be a separateorganization/business) within a group-based communication system may beidentified. For example, an organization identifier may comprise ASCIItext, a pointer, a memory address, and the like.

A “sending user identifier” is associated with a collection of messagesthat are sent by a particular user (i.e., a client device associatedwith the particular user). These messages may be analyzed to determinecontext regarding the user (e.g., the user's expertise or interest in atopic may be determined based on the frequency of mention of the topicor key words associated with the topic within such messages).

The term “user” should be understood to refer to an individual, group ofindividuals, business, organization, and the like; the users referred toherein are accessing a group-based communication or messaging systemusing client devices.

The terms “user profile,” “user account,” and “user account details”refer to information associated with a user, including, for example, auser identifier, one or more group-based communication channelidentifiers associated with group-based communication channels that theuser has been granted access to, one or more group identifiers forgroups with which the user is associated, one or more organizationidentifiers for organizations with which the user is associated, anindication as to whether the user is an owner of any group-basedcommunication channels, an indication as to whether the user has anygroup-based communication channel restrictions, a plurality of messages,an emoji, a plurality of conversations, a plurality of conversationtopics, an avatar, an email address, a real name (e.g., John Doe), ausername (e.g., jdoe), a password, a real name, a time zone, a status,and the like. The user account details can include a subset designationof user credentials, such as, for example, login information for theuser including the user's username and password.

As used herein, the terms “group-based message” and “message” refer toany electronically generated device rendered objects provided by a userusing a client device and that is configured for display within agroup-based communication channel. Message communications may includeany text, image, video, audio or combination thereof provided by a user(using a client device). For instance, the user may provide agroup-based message that includes text as well as an image and a videowithin the group-based message as message contents. In such a case, thetext, image, and video would comprise the group-based message or devicerendered object. Each message sent or posted to a group-basedcommunication channel of the group-based communication system includesmetadata comprising the following: a sending user identifier, a messageidentifier, message contents, a group identifier, and a group-basedcommunication channel identifier. Each of the foregoing identifiers maycomprise ASCII text, a pointer, a memory address, and the like.

Group-based communication system users are organized into organizationgroups (e.g., employees of each company may be a separate organizationgroup) and each organization group may access a group-basedcommunication interface having one or more group-based communicationchannels (explained below) to which users may be assigned or which theusers may join (e.g., group-based communication channels may representdepartments, geographic locations such as offices, product lines, userinterests, topics, issues, and/or the like). A group identifier may beused to facilitate access control for a message (e.g., access to themessage, such as having the message return as part of search results inresponse to a search query, may be restricted to those users having thegroup identifier associated with their user profile). The groupidentifier may be used to determine context for the message (e.g., adescription of the group, such as the name of an organization and/or abrief description of the organization, may be associated with the groupidentifier).

Group-based communication system users may join group-basedcommunication channels. Some group-based communication channels may beglobally accessible to those users having a particular organizationalgroup identifier associated with their user profile (i.e., users who aremembers of the organization). Access to some group-based communicationchannels may be restricted to members of specified groups, whereby thegroup-based communication channels are accessible to those users havinga particular group identifier associated with their user profile. Thegroup-based communication channel identifier may be used to facilitateaccess control for a message (e.g., access to the message, such ashaving the message return as part of search results in response to asearch query, may be restricted to those users having the group-basedcommunication channel identifier associated with their user profile, orwho have the ability to join the group-based communication channel). Thegroup-based communication channel identifier may be used to determinecontext for the message (e.g., a description of the group-basedcommunication channel, such as a description of a project discussed inthe group-based communication channel, may be associated with thegroup-based communication channel identifier).

The term “private group-based communication channel” refers to agroup-based communication channel with restricted access such that it isnot generally accessible and/or searchable by other members of thegroup-based communication system. For example, only those users oradministrators who have knowledge of and permission to access (e.g., agroup-based communication channel identifier for the private group-basedcommunication channel is associated with their user profile after theuser has been validated/authenticated) the private group-basedcommunication channel may view content of the private group-basedcommunication channel.

The term “user message data” refers to data generated by an externalapplication based on messages to be rendered to one or more of theclient devices. For example, user message data may be generated by anexternal application based on group-based messages or other attachmentsassociated with the group-based messages to be rendered within agroup-based communication interface to be rendered to a client device.In some examples, user message data may include images, files, objects,or text that the external application intends that a user of thegroup-based communication system view in a message UI.

The term “external application” refers to a software program, platform,or service that is configured to communicate with the group-basedcommunication system for providing service to a client device via agroup-based communication interface. The external application operateson a compiled code base or repository that is separate and distinct fromthat which supports the group-based communication system. In someembodiments, the external application may communicate with thegroup-based communication system, and vice versa, through one or moreapplication program interfaces (APIs). In some embodiments, the externalapplication receives tokens or other authentication credentials that areused to facilitate secure communication between the external applicationand the group-based communication system in view of group-basedcommunication system network security layers or protocols (e.g., networkfirewall protocols). Once connected with the remote networked device,the external application may transmit messages through the group-basedcommunication system to a targeted client device.

The term “device rendered object” may be used to refer to a set of dataand executable instructions that, when received and executed by aprocessor of a computing entity, render an object or interface fordisplay that is engageable by the user of the computing entity.

As used herein, the term “message user interface (UI)” refers to anelectronically generated platform that, when rendered for display on aclient device, provides device rendered objects associated with amessage communicated within the group-based communication system. Themessage UI enables a user operating the client device to interact orcommunicate with a server, a processing device, a program, or anexternal application provided in a group-based communication channel ofa group-based communication system. For example, the message UI may bein a form of an attachment that is attached to a message communicatedwithin a group-based communication channel. In such an example, themessage UI may be displayed under the message enabling a user operatingthe client device to interact or communicate with a server, a processingdevice, a program, or an external application associated with themessage. In another example, the message UI may be in the form of athreaded message that is attached to a topic thread. In another example,the message UI may be mounted within a user dashboard for rendering auser profile or user account details.

The term “message user interface (UI) triggering event” refers to anaction, incident, collection of steps, or processes executed, via anexternal application, by an external application developer for buildingand rendering a message UI within a group-based communication interfaceassociated with one or more client devices, where the message UItriggering event is identifiable by a server and may be correlated toone or more client devices. Triggering events may be pre-defined (e.g.,button clicks, slash commands, etc.) or may be learned by thegroup-based communication system over time using machine learning modelsor other similar techniques. In exemplary embodiments, once a message UItriggering event is identified, the group-based communication server isconfigured to transmit a customizable block request to an externalapplication associated with the message UI triggering event and/or anyrespectively correlated message UI building request.

As used herein, the term “customizable block configuration” refers to anelectronically generated template of a message UI within a group-basedcommunication interface. A customizable block configuration comprisesmultiple designated sections/blocks that are used for displaying devicerendered objects in a section-based/block-based manner. A customizableblock configuration may divide a message UI into designatedsections/blocks that, when rendered for display on a client device, eachdesignated section/block may provide corresponding device renderedobjects. For example, a customizable block configuration may comprisecustomizable blocks allowing an external application developer using aclient device to build a message UI by setting different element values(defined below) for different element attributes (defined below)associated with each block. For example, a customizable blockconfiguration may allow an external application developer using a clientdevice to select the style, number, or the display order of the elementsassociated with each block to be rendered for display within the messageUI.

As used herein, the term “customizable block request” refers to anelectronically generated request from a group-based communication serverfor building a customizable block of a message UI within a group-basedcommunication interface of a group-based communication system andrendering for display on client devices associated with the group-basedcommunication interface. A customizable block request may include ablock type (defined below) to identify what type of block to be renderedto the client device associated with the group-based communicationinterface.

As used here, the term “customizable block data” refers to any data,data set, or data package that is sent from an external application andmay be used by a group-based communication server of a group-basedcommunication system for rendering a message UI within a group-basedcommunication interface associated with a client device. For example,the customizable block data may comprise multiple block arrays, whereeach block array is associated with a respective block to be renderedfor display within the message UI.

As used here, the term “block” refers to a designated section or areawithin a group-based communication interface that is used for displayingcertain device rendered objects. The device rendered objects to bedisplayed within a block may be associated with the block type (definedbelow) of the block.

As used herein, the term “block type” refers to any data, data set, ordata package for identifying what type of blocks within a message UI anexternal application developer would like to build and render fordisplay on a client device. For example, a block type may be a “textblock type” that is used to identify a text block the externalapplication developer would like to build for displaying the textcontent. A block type may be a “thumbnail block type” that is used toidentify a thumbnail block the external application developer would liketo build for displaying the reduced-size versions of the image or videocontent. A block type may be a “divider block type” that is used toidentify a divider block the external application developer would liketo build for displaying the divider image content to separate differentdesignated sections/blocks. A block type may be an “image block type”that is used to identify an image block the external applicationdeveloper would like to build for displaying the image content. A blocktype may be a “video block type” that is used to identify a video blockthe external application developer would like to build for displayingthe video content. A block type may be a “meta block type” that is usedto identify a meta block the external application developer would liketo build for displaying the metadata content. A block type may be an“action block type” that is used to identify an action block theexternal application developer would like to build for displaying actioncontent (e.g., an accept/reject button, a dropdown menu button, anoverflow menu button) and accepting actions initiated by client devices.A block type may be a “poll block type” that is used to identify a pollblock the external application developer would like to build fordisplaying poll contents (e.g., different options for users to select)and accepting votes from client devices. A block type may be a “fileblock type” that is used to identify a file block the externalapplication developer would like to build for displaying the filecontent shared between client devices. A block type may be a “call blocktype” that is used to identify a call block the external applicationdeveloper would like to build for displaying the call content (e.g., aphone button for users to make a call). It will be appreciated that theblock type may include other block types not described above.

As used herein, the term “elements” refers to electronically generateddevice rendered objects that are served as the smallest design units forbuilding a block of a message UI. A block may comprise a plurality ofelements that, when combined together, forms the block. For example, anelement may be a “text element” that is provided for an externalapplication developer to design how text content would be displayedwithin a block. An element may be an “image element” that is providedfor an external application developer to design how image content wouldbe displayed within a block. An element may be a “divider element” thatis provided for an external application developer to design how dividercontent would be displayed within a block. An element may be a “videoelement” that is provided for an external application developer todesign how video content would be displayed within a block. An elementmay be a “button element” that is provided for an external applicationdeveloper to design how a button would be displayed within a block. Anelement may be a “dropdown menu element” that is provided for anexternal application developer to design how a dropdown menu would bedisplayed within a block. An element may be an “overflow menu element”that is provided for an external application developer to design how anoverflow menu would be displayed within a block. It will be appreciatedthat the elements may include other elements not described above.

As used herein, the term “element attributes” refers to design featuresassociated with an element such that the element, when rendered fordisplay on a client device, reflects the features designed by anexternal application developer. For example, the term “size attribute”refers to a size feature for displaying an image element in a specificsize. For another example, the term “color attribute” refers to a colorfeature for displaying a button element in a specific color. For anotherexample, the term “action text attribute” refers to a text feature fordisplaying specific text associated with a button element, a dropdownmenu element, or an overflow menu element within an action block type ora call block type. It will be appreciated that the element attributesmay include other attributes not described above.

As used herein, the term “element values” refers to electronic generatedvalues associated with element attributes of an element. An elementvalue may be used to define an element attribute identifying how theelement may be displayed within the block comprising the element, so asto reflect an element feature designed by an external applicationdeveloper.

As used herein, the term “block array” refers to a collection of elementvalues (defined above) associated with a block type. A block array maycomprise a plurality of element values, where each element valuedefining an attribute associated with a corresponding element to bedisplayed within the block associated with the block type.

Example System Architecture

Methods, apparatuses, and computer program products of the presentdisclosure may be embodied by any of a variety of devices. For example,the method, apparatus, and computer program product of an exampleembodiment may be embodied by a networked device (e.g., an enterpriseplatform), such as a server or other network entity, configured tocommunicate with one or more devices, such as one or more clientdevices. Additionally or alternatively, the computing device may includefixed computing devices, such as a personal computer or a computerworkstation. Still further, example embodiments may be embodied by anyof a variety of mobile devices, such as a portable digital assistant(PDA), mobile telephone, smartphone, laptop computer, tablet computer,wearable, or any combination of the aforementioned devices.

FIG. 1 illustrates an example computing system 100 within whichembodiments of the present disclosure may operate. Users may access agroup-based communication system 105 via a communications network 104using client devices 101A-101N. An external application server 108 mayinteract with a group-based communication system 105 via acommunications network 104. The group-based communication system 105 maycomprise a group-based communication server 106 in communication with atleast one group-based communication repository 107.

Communications network 104 may include any wired or wirelesscommunication network including, for example, a wired or wireless localarea network (LAN), personal area network (PAN), metropolitan areanetwork (MAN), wide area network (WAN), or the like, as well as anyhardware, software and/or firmware required to implement it (such as,e.g., network routers, etc.). For example, communications network 104may include a cellular telephone, an 802.11, 802.16, 802.20, and/orWiMax network. Further, the communications network 104 may include apublic network, such as the Internet, a private network, such as anintranet, or combinations thereof, and may utilize a variety ofnetworking protocols now available or later developed including, but notlimited to TCP/IP based networking protocols. For instance, thenetworking protocol may be customized to suit the needs of thegroup-based communication system. In some embodiments, the protocol is acustom protocol of JSON objects sent via a Websocket channel. In someembodiments, the protocol is JSON over RPC, JSON over REST/HTTP, and thelike.

The group-based communication server 106 may be embodied as a computeror computers as known in the art. The group-based communication server106 may provide for receiving of electronic data from various sources,including but not necessarily limited to the client devices 101A-101N orexternal application server 108. For example, the group-basedcommunication server 106 may be operable to receive and post or transmitgroup-based messages provided by the client devices 101A-101N. Foranother example, the group-based communication server 106 may beoperable to receive user message data provided by external applicationserver, for building and rendering a message UI to client devices101A-101N.

The group-based communication repository 107 may be embodied as a datastorage device such as a Network Attached Storage (NAS) device ordevices, or as a separate database server or servers. The group-basedcommunication repository 107 includes information accessed and stored bythe group-based communication server 106 to facilitate the operations ofthe group-based communication system 105. For example, the group-basedcommunication repository 107 may include, without limitation, aplurality of messaging communications organized among a plurality ofgroup-based communication channels, and/or the like.

The client devices 101A-101N may be any computing device as definedabove. Electronic data received by the group-based communication server106 from the client devices 101A-101N may be provided in various formsand via various methods. For example, the client devices 101A-101N mayinclude desktop computers, laptop computers, smartphones, netbooks,tablet computers, wearables, and the like.

In embodiments where a client device 101A-101N is a mobile device, suchas a smart phone or tablet, the client device 101A-101N may execute an“app” to interact with the group-based communication system 105. Suchapps are typically designed to execute on mobile devices, such astablets or smartphones. For example, an app may be provided thatexecutes on mobile device operating systems such as iOS®, Android®, orWindows®. These platforms typically provide frameworks that allow appsto communicate with one another and with particular hardware andsoftware components of mobile devices. For example, the mobile operatingsystems named above each provide frameworks for interacting withlocation services circuitry, wired and wireless network interfaces, usercontacts, and other applications. Communication with hardware andsoftware modules executing outside of the app is typically provided viaapplication programming interfaces (APIs) provided by the mobile deviceoperating system.

Additionally or alternatively, the client device 101A-101N may interactwith the group-based communication system 105 via a web browser. As yetanother example, the client device 101A-101N may include varioushardware or firmware designed to interface with the group-basedcommunication system 105.

In some embodiments of an exemplary group-based communication system105, a message or group-based message may be sent from a client device101A-101N to a group-based communication system 105. In variousimplementations, the message may be sent to the group-basedcommunication system 105 over communications network 104 directly by aclient device 101A-101N, the message may be sent to the group-basedcommunication system 105 via an intermediary such as a message server,and/or the like. For example, the client device 101A-101N may be adesktop, a laptop, a tablet, a smartphone, and/or the like that isexecuting a client application (e.g., a group-based communication app).In one implementation, the message may include data such as a messageidentifier, sending user identifier, a group identifier, a group-basedcommunication channel identifier, message contents (e.g., text, emojis,images, links), attachments (e.g., files), message hierarchy data (e.g.,the message may be a reply to another message), third party metadata,and/or the like. In one embodiment, the client device 101A-101N mayprovide the following example message, substantially in the form of a(Secure) Hypertext Transfer Protocol (“HTTP(S)”) POST message includingeXtensible Markup Language (“XML”) formatted data, as provided below:

POST /authrequest.php HTTP/1.1 Host: www.server.com Content-Type:Application/XML Content-Length: 667 <?XML version = “1.0” encoding =“UTF-8”?> <auth_request>  <timestamp>2020-12-31 23:59:59</timestamp> <user_accounts_details>   <user_account_credentials>   <user_name>ID_user_1</user_name>    <password>abc123</password>   //OPTIONAL <cookie>cookieID</cookie>    //OPTIONAL<digital_cert_link>www.mydigitalcertificate.com/JohnDoeDaDoeDoe@gmail.com/mycertifcate.dc</digital_cert_link>   //OPTIONAL <digital_certificate>_DATA_</digital_certificate>  </user_account_credentials>  </user_accounts_details> <client_details> //iOS Client with App and Webkit    //it should benoted that although several client details    //sections are provided toshow example variants of client    //sources, further messages willinclude only on to save    //space   <client_IP>10.0.0.123</client_IP>  <user_agent_string>Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like MacOS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201Safari/9537.53</user_agent_string>   <client_product_type>iPhone6,1</client_product_type>   <client_serial_number>DNXXX1X1XXXX</client_serial_number>  <client_UDID>3XXXXXXXXXXXXXXXXXXXXXXXXD</client_UDID>  <client_OS>iOS</client_OS>  <client_OS_version>7.1.1</client_OS_version>   <client_app_type>appwith webkit</client_app_type>  <app_installed_flag>true</app_installed_flag>  <app_name>NickName.app</app_name>   <app_version>1.0 </app_version>  <app_webkit_name>Mobile Safari</client_webkit_name>  <client_version>537.51.2</client_version>  </client_details> <client_details> //iOS Client with Webbrowser  <client_IP>10.0.0.123</client_IP>   <user_agent_string>Mozilla/5.0(iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML,like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53</user_agent_string>  <client_product_type>iPhone6,1</client_product_type>  <client_serial_number>DNXXX1X1XXXX</client_serial_number>  <client_UDID>3XXXXXXXXXXXXXXXXXXXXXXXXD</client_UDID>  <client_OS>iOS</client_OS>  <client_OS_version>7.1.1</client_OS_version>   <client_app_type>webbrowser</client_app_type>   <client_name>Mobile Safari</client_name>  <client_version>9537.53</client_version>  </client_details> <client_details> //Android Client with Webbrowser  <client_IP>10.0.0.123</client_IP>   <user_agent_string>Mozilla/5.0(Linux; U; Android 4.0.4; en-us; Nexus S Build/IMM76D)AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 MobileSafari/534.30</user_agent_string>   <client_product_type>NexusS</client_product_type>  <client_serial_number>YXXXXXXXXZ</client_serial_number>  <client_UDID>FXXXXXXXXX-XXXX-XXXX-XXXX- XXXXXXXXXXXXX</client_UDID>  <client_OS>Android</client_OS>  <client_OS_version>4.0.4</client_OS_version>   <client_app_type>webbrowser</client_app_type>   <client_name>Mobile Safari</client_name>  <client_version>534.30</client_version>  </client_details> <client_details> //Mac Desktop with Webbrowser  <client_IP>10.0.0.123</client_IP>   <user_agent_string>Mozilla/5.0(Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, likeGecko) Version/7.0.3 Safari/537.75.14</user_agent_string>  <client_product_type>MacPro5,1</client_product_type>  <client_serial_number>YXXXXXXXXZ</client_serial_number>  <client_UDID>FXXXXXXXXX-XXXX-XXXX-XXXX- XXXXXXXXXXXXX</client_UDID>  <client_OS>Mac OS X</client_OS>  <client_OS_version>10.9.3</client_OS_version>   <client_app_type>webbrowser</client_app_type>   <client_name>Mobile Safari</client_name>  <client_version>537.75.14</client_version>  </client_details> <message>   <message_identifier>ID_message_10</message_identifier>  <team_identifier>ID_team_1 </team_identifier>  <channelidentifier>ID_channel_1 </channel_identifier>   <contents>Thatis an interesting invention. I have attached a copy our patentpolicy.</contents>   <attachments>patent_policy.pdf</attachments> </message> </auth_request>

The group-based communication system 105 comprises at least onegroup-based communication server 106 that may create a storage messagebased upon the received message to facilitate message indexing andstorage in a group-based communication repository 107. In oneimplementation, the storage message may include data such as a messageidentifier, a group identifier, a group-based communication channelidentifier, a sending user identifier, topics, responses, messagecontents, attachments, message hierarchy data, third party metadata,conversation primitive data, and/or the like. For example, thegroup-based communication server 106 may provide the following examplestorage message, substantially in the form of a HTTP(S) POST messageincluding XML-formatted data, as provided below:

POST /storage_message.php HTTP/1.1 Host: www.server.com Content-Type:Application/XML Content-Length: 667 <?XML version = “1.0” encoding =“UTF-8“?> <storage_message> <message_identifier>ID_message_10</message_identifier> <team_identifier>ID_team_1</team_identifier> <channel_identifier>ID_channel_1</channel_identifier> <sending_user_identifier>ID_user_1</sending_user_identifier>  <topics>  <topic>inventions</topic>   <topic>patents</topic>  <topic>policies</topic>  </topics>  <responses>   <response>liked byID_user_2</response>   <response>starred by ID_user_3</response> </responses>  <contents>That is an interesting invention. I haveattached a copy our patent policy.</contents> <attachments>patent_policy.pdf</attachments>  <conversation_primitive>  conversation includes messages: ID_message_8, ID_message_9,ID_message_10,   ID_message_11, ID_message_12  </conversation_primitive></storage_message>

In embodiments, a group identifier as defined above may be associatedwith the message.

In embodiments, a group-based communication channel identifier asdefined above may be associated with the message.

In embodiments, a sending user identifier as defined above may beassociated with the message. In one implementation, the message may beparsed (e.g., using PHP commands) to determine a sending user identifierof the user who sent the message.

In embodiments, topics may be associated with the message. In oneimplementation, the message contents may be parsed (e.g., using PHPcommands) to determine topics discussed in the message. For example,hashtags in the message may channels associated with the message. Inanother example, the message may be analyzed (e.g., by itself, withother messages in a conversation primitive) or parsed using a machinelearning technique, such as topic modeling, to determine topicsassociated with the message.

In embodiments, data indicating responses may be associated with themessage. For example, responses to the message by other users mayinclude reactions (e.g., selection of an emoji associated with themessage, selection of a “like” button associated with the message),clicking on a hyperlink embedded in the message, replying to the message(e.g., posting a message to the group-based communication channel inresponse to the message), downloading a file associated with themessage, sharing the message from one group-based communication channelto another group-based communication channel, pinning the message,starring the message, and/or the like. In one implementation, dataregarding responses to the message by other users may be included withthe message, and the message may be parsed (e.g., using PHP commands) todetermine the responses. In another implementation, data regardingresponses to the message may be retrieved from a database. For example,data regarding responses to the message may be retrieved via a MySQLdatabase command similar to the following:

-   -   SELECT messageResponses    -   FROM MSM_Message    -   WHERE messageID=ID_message_10.

For example, data regarding responses to the message may be used todetermine context for the message (e.g., a social score for the messagefrom the perspective of some user). In another example, data regardingresponses to the message may be analyzed to determine context regardingthe user (e.g., the user's expertise in a topic may be determined basedon the responses to the user's message regarding the topic).

In embodiments, attachments may be included with the message. If thereare attachments, files may be associated with the message. In oneimplementation, the message may be parsed (e.g., using PHP commands) todetermine file names of the attachments. For example, file contents maybe analyzed to determine context for the message (e.g., a patent policydocument may indicate that the message is associated with the topic“patents”).

In embodiments, third party metadata may be associated with the message.For example, third party metadata may provide additional contextregarding the message or the user that is specific to a company, group,group-based communication channel, and/or the like. In oneimplementation, the message may be parsed (e.g., using PHP commands) todetermine third party metadata. For example, third party metadata mayindicate whether the user who sent the message is an authorizedrepresentative of the group-based communication channel (e.g., anauthorized representative may be authorized by the company to respond toquestions in the group-based communication channel).

In embodiments, a conversation primitive may be associated with themessage. In one implementation, a conversation primitive is an elementused to analyze, index, store, and/or the like messages. For example,the message may be analyzed by itself, and may form its own conversationprimitive. In another example, the message may be analyzed along withother messages that make up a conversation, and the messages that makeup the conversation may form a conversation primitive. In oneimplementation, the conversation primitive may be determined as themessage, a specified number (e.g., two) of preceding messages and aspecified number (e.g., two) of following messages. In anotherimplementation, the conversation primitive may be determined based onanalysis of topics discussed in the message and other messages (e.g., inthe channel) and/or proximity (e.g., message send order proximity,message send time proximity) of these messages.

In embodiments, various metadata, determined as described above, and/orthe contents of the message may be used to index the message (e.g.,using the conversation primitive) to facilitate various facets ofsearching (i.e., search queries that return results from group-basedcommunication repository 107). In one implementation, a storage messagemay be sent from group-based communication server 106 to facilitateindexing in group-based communication repository 107. In anotherimplementation, metadata associated with the message may be determinedand the message may be indexed in group-based communication repository107. In one embodiment, the message may be indexed such that a company'sor a group's messages are indexed separately (e.g., in a separate indexassociated with the group and/or company that is not shared with othergroups and/or companies). In one implementation, messages may be indexedat a separate distributed repository (e.g., to facilitate data isolationfor security purposes).

If there are attachments associated with the message, file contents ofthe associated files may be used to index such files in group-basedcommunication repository 107 to facilitate searching. In one embodiment,the files may be indexed such that a company's or a group's files areindexed at a separate distributed repository.

Example Apparatus for Implementing Embodiments of the Present Disclosure

FIG. 2 illustrates an exemplary schematic diagram of a group-basedcommunication server 200 that may be embodied by one or more computingsystems. The group-based communication server 200 may include aprocessor 202, a memory 201, input/output circuitry 203, communicationscircuitry 205, and message UI block request and rendering module 204.The group-based communication server 200 may be configured to executethe operations described herein. Although the components are describedwith respect to functional limitations, it should be understood that theparticular implementations necessarily include the use of particularhardware. It should also be understood that certain of the componentsdescribed herein may include similar or common hardware. For example,two sets of circuitry may both leverage use of the same processor,network interface, storage medium, or the like to perform theirassociated functions, such that duplicate hardware is not required foreach set of circuitry. The use of the term “circuitry” as used hereinwith respect to components of the apparatus should therefore beunderstood to include particular hardware configured to perform thefunctions associated with the particular circuitry as described herein.

The term “circuitry” should be understood broadly to include hardwareand, in some embodiments, software for configuring the hardware. Forexample, in some embodiments, “circuitry” may include processingcircuitry, storage media, network interfaces, input/output devices, andthe like. In some embodiments, other elements of the group-basedcommunication server 200 may provide or supplement the functionality ofparticular circuitry. For example, the processor 202 may provideprocessing functionality, the memory 201 may provide storagefunctionality, the communications circuitry 205 may provide networkinterface functionality, and the like.

In some embodiments, the processor 202 (and/or co-processor or any otherprocessing circuitry assisting or otherwise associated with theprocessor) may be in communication with the memory 201 via a bus forpassing information among components of the apparatus. The memory 201may be non-transitory and may include, for example, one or more volatileand/or non-volatile memories. In other words, for example, the memorymay be an electronic storage device (e.g., a computer readable storagemedium). The memory 201 may be configured to store information, data,content, applications, instructions, or the like, for enabling theapparatus to carry out various functions in accordance with exampleembodiments of the present disclosure.

The processor 202 may be embodied in a number of different ways and may,for example, include one or more processing devices configured toperform independently. Additionally or alternatively, the processor mayinclude one or more processors configured in tandem via a bus to enableindependent execution of instructions, pipelining, and/ormultithreading. The use of the term “processing circuitry” may beunderstood to include a single core processor, a multi-core processor,multiple processors internal to the apparatus, and/or remote or “cloud”processors.

In an example embodiment, the processor 202 may be configured to executeinstructions stored in the memory 201 or otherwise accessible to theprocessor. Alternatively, or additionally, the processor may beconfigured to execute hard-coded functionality. As such, whetherconfigured by hardware or software methods, or by a combination thereof,the processor may represent an entity (e.g., physically embodied incircuitry) capable of performing operations according to an embodimentof the present disclosure while configured accordingly. Alternatively,as another example, when the processor is embodied as an executor ofsoftware instructions, the instructions may specifically configure theprocessor to perform the algorithms and/or operations described hereinwhen the instructions are executed.

In some embodiments, the group-based communication server 200 mayinclude input/output circuitry 203 that may, in turn, be incommunication with processor 202 to provide output to the user and, insome embodiments, to receive an indication of a user input. Theinput/output circuitry 203 may comprise a user interface and may includea display and may comprise a web user interface, a mobile application, aclient device, a kiosk, or the like. In some embodiments, theinput/output circuitry 203 may also include a keyboard, a mouse, ajoystick, a touch screen, touch areas, soft keys, a microphone, aspeaker, or other input/output mechanisms. The processor and/or userinterface circuitry comprising the processor may be configured tocontrol one or more functions of one or more user interface elementsthrough computer program instructions (e.g., software and/or firmware)stored on a memory accessible to the processor (e.g., memory 201, and/orthe like).

The communications circuitry 205 may be any means such as a device orcircuitry embodied in either hardware or a combination of hardware andsoftware that is configured to receive and/or transmit data from/to anetwork and/or any other device, circuitry, or module in communicationwith the group-based communication server 200. In this regard, thecommunications circuitry 205 may include, for example, a networkinterface for enabling communications with a wired or wirelesscommunication network. For example, the communications circuitry 205 mayinclude one or more network interface cards, antennae, buses, switches,routers, modems, and supporting hardware and/or software, or any otherdevice suitable for enabling communications via a network. Additionallyor alternatively, the communication interface may include the circuitryfor interacting with the antenna(s) to cause transmission of signals viathe antenna(s) or to handle receipt of signals received via theantenna(s).

The message UI block request and rendering module 204 includes hardwareconfigured to support a group-based communication system. The message UIblock request and rendering module 204 may utilize processing circuitry,such as the processor 202, to perform these actions. The message UIblock request and rendering module 204 may send and/or receive data fromgroup-based communication repository 107. In some implementations, thesent and/or received data may be of enterprise-based digital contentobjects organized among a plurality of group-based communicationchannels. It should also be appreciated that, in some embodiments, themessage UI block request and rendering module 204 may include a separateprocessor, specially configured field programmable gate array (FPGA), orapplication specific interface circuit (ASIC).

As described above and as will be appreciated based on this disclosure,embodiments of the present disclosure may be configured as methods,mobile devices, backend network devices, and the like. Accordingly,embodiments may comprise various means including entirely of hardware orany combination of software and hardware. Furthermore, embodiments maytake the form of a computer program product on at least onenon-transitory computer-readable storage medium having computer-readableprogram instructions (e.g., computer software) embodied in the storagemedium. Any suitable computer-readable storage medium may be utilizedincluding non-transitory hard disks, CD-ROMs, flash memory, opticalstorage devices, or magnetic storage devices.

Example Processes for Building and Rendering a Message User Interface(UI) within a Group-Based Communication Interface

In the present disclosure, the block kit structure or block kits areprovided via the operation of the group-based communication server 106.The block kit structure or block kits may be associated with a varietyof block types, such as a text block type, a divider block type, anaction block type, etc., for an external application developer to pickand choose blocks desired to be rendered within a message UI. Inembodiments, each block type is further defined by multiple elements,where different element values for each element may be set by theexternal application developer. Based on the block kit structure orblock kits provided by the group-based communication system, theexternal application developer may design a customizable blockconfiguration for building a desired message UI.

The customizable block configuration may serve as a foundation or atemplate for an external application developer to build the message UI.For example, an external application developer may determine to design acustomizable block configuration, associated with a text block type, adivider block type, and an action block type, to be rendered for displaywithin a message UI. In such an example, with respect to a text elementassociated with the text block, the external application developer maydetermine what text content to be rendered for display within the textblock. With respect to a button element associated with the action blocktype, the external application developer may determine what color orwhat action text associated with the button to be rendered for displaywithin the action block type. The above example shows that the externalapplication developer may have a certain degree of autonomy to build adesired message UI using the block kit structure or block kits providedby the group-based communication system.

As a balance to the external application developer autonomy referencedabove, the block kits defined by the group-based communication systemalso set certain limits regarding how the external application developermay build any desired message UI. In the above example, with respect tothe text element associated with the text block, the externalapplication developer may be restricted to determine what text font,size, or color to be rendered for display within the text block, but mayonly determine what text content to be displayed. With respect to thedivider element associated with the divider block, the externalapplication developer may also be restricted to set the size, color, ordesign pattern of the divider element for dividing different blocks.Balancing between the external application developer autonomy andrestrictions defined by the group-based communication system ensures aconsistent user experience for all message UIs communicated within thegroup-based communication system.

FIG. 3 illustrates exemplary message UIs rendered within a group-basedcommunication interface 300 associated with a group-based communicationchannel according to one embodiment of the present disclosure. Asdescribed herein, group-based communication interface 300 is presentedon a display of client devices 101A-101N. Group-based messages 302A-302Care rendered within the group-based communication interface 300associated with a selected group-based communication channel 301(Channel B). Each group-based message comprises group-based messageinformation, which includes user information identifying a user who sentthe group-based message, and a timestamp indicating when the group-basedmessage was sent. Each group-based message may further comprise amessage UI (e.g., 304A-304C) attached to the group-based message. Themessage UI may be built and rendered for display under the respectivegroup-based message based on user message data.

In the exemplary embodiment, the group-based messages 302A-302C areuniformly rendered to each user viewing the group-based communicationinterface associated with the selected Channel B. For the purposesdescribed herein, the user may interact or communicate with thegroup-based communication server 106 utilizing the message input field303. And a message UI (e.g., 304A-304C) may be generated based on theuser's interaction or communication with the group-based communicationserver 106. For example, the user, John Doe using a client device mayinput or enter “Does anyone have the Word document for project A?” intothe message input field 303. And based on the content John Doe keyed orentered, a message UI 304A may be generated and rendered within thegroup-based communication interface 300 by way of attaching a text blockunder the user information or timestamp of the group-based messages302A.

FIG. 4 illustrates an exemplary customizable block configurationdefining a message UI that is rendered within a group-basedcommunication interface 400 according to one embodiment of the presentdisclosure. In the embodiment, a group-based message 401A is generatedand rendered for display within a group-based communication interface400. The group-based message 401A may comprise information indicatingwhat type of message is being generated (e.g., an application type ofmessage associated with an external application as shown as APP in FIG.4), which external application the message is associated with (e.g.,ACME Customer Service application for providing customer service asshown in FIG. 4), or a timestamp regarding what time the message isbeing generated (e.g., 10:22 AM as shown in FIG. 4). An ACME CustomerService application developer may build a message UI 401B according tothe exemplary embodiment of the present disclosure whenever a new ticketis submitted by a customer via the ACME Customer Service application.

In the embodiment, a message UI 401B built by an external applicationdeveloper is attached to the group-based message 401A and rendered fordisplay under the group-based message 401A. In the embodiment, themessage UI 401B is defined by a customizable block configuration thatcomprises multiple blocks 402-408, where each block is associated with arespective block type and may comprise multiple elements.

For the ACME Customer Service example shown in FIG. 4, block 402 isassociated with a text block that comprises a text element, where thetext element is configured to display the following text content: “NewTicket Submitted.” Block 403 is associated with a thumbnail block typethat comprises an image element, where the image element is configuredto display a reduced-size picture or video for identifying a consumeraccount. Block 404 is associated with a divider type that comprises adivider element for dividing different blocks. Block 405 is associatedwith a text block type that comprises a text element, where the textelement is configured to display text content related to a placed orderat issue. Block 406 is associated with an image block type that maycomprise an image element 406A or a text element 406B related to theplaced order at issue. For example, the image element 406A in FIG. 4 isconfigured to display an image of a watch associated with the order atissue. The text element 406B is configured to display text contentassociated with an item name or a quantity number of the watchassociated with the placed order at issue.

Block 407 is associated with a meta block type that may comprise animage element 407A or a text element 407B. For example, the imageelement 407A in FIG. 4 may be configured to display a sign showing thata new ticket is opened or closed. The text element 407B may beconfigured to display text content showing a current status of theticket indicating whether the customer's submitted issue is resolved ornot. Block 408 is associated with an action block type that comprisesbutton elements 408A-408B, a dropdown menu element 408C, or an overflowelement 408D for accepting actions initiated by a customer servicestaff. For example, the button element 408A may be configured to accepta clicking action when the staff decided to take this new ticket andclicked on the “Take It” button. The button element 408B may beconfigured to accept a clicking action when the staff decided to quicklyreply to the ticket and clicked on the “Quick Reply” button. Thedropdown menu element 408C and the overflow element 408D may beconfigured to accept a clicking action when the staff would like toexamine and choose other actions in response to the submitted newticket.

In the above embodiment, an external application developer may build andgenerate a customizable block configuration defining a message UIaccording to the exemplary embodiment of the present disclosure.Further, the external application developer may determine which blocksto be built in the message UI and which elements to be mounted in eachblock. In embodiments, each element of the blocks may be furtherassociated with an element value for defining an element attribute. Inembodiments, each element attribute is used to define how the elementmay be displayed within a group-based communication interface. Multipleelement values associated with the same block may be combined to form ablock array for defining a specific block within a message UI.

FIG. 5 illustrates an exemplary flow diagram for building and renderinga message UI within a group-based communication interface according toone embodiment of the present disclosure. The method 500 begins withreceiving, from an external application, user message data associatedwith the group-based communication interface to be rendered to a clientdevice (501). For example, user message data may be generated at thetime an external application developer received a submitted new ticketvia an external application and would like to build and render a messagewith a message UI to a client device.

The method 500 continues with parsing the user message data to identifya message UI triggering event (502). The message UI triggering event isassociated with a client device. In embodiments, a group-basedcommunication server may parse the user message data received from theexternal application. The group-based communication server may further,based on parsing the user message data, identify a message UI triggeringevent that is associated with a client device. For example, a new ticketsubmission event received from an ACME Customer Service application maybe identified among the user message data and the new ticket submissionmay be associated with client devices used by employees of the ACMECustomer Service.

The method 500 continues with determining whether the message UItriggering event is identified among the user message data (503). Incircumstances where the message UI triggering event is identified amongthe user message data, the method 500 continues with determining, basedon the message UI triggering event, a customizable block configurationto define the message UI that is rendered within the group-basedcommunication interface (504). In embodiments, the group-basedcommunication server may determine a customizable block configurationcomprising multiple blocks to define a message UI. In such embodiments,the blocks defining the message UI rendered within the group-basedcommunication interface may be determined based on the message UItriggering event. For example, the group-based communication server maydetermine a customizable block configuration comprising text blocks,image blocks, divider blocks, meta blocks, or action blocks that isassociated with the new ticket submission event initiated by the ACMECustomer Service application.

The method 500 further continues with transmitting a customizable blockrequest to the external application associated with the customizableblock configuration (505). For example, the group-based communicationserver may transmit a customizable block request to the ACME CustomerService application server associated with the customizable blockconfiguration.

The method 500 further continues with receiving customizable block datafrom the external application associated with the customizable blockrequest (506). For example, the group-based communication server mayreceive customizable block data from the ACME Customer Serviceapplication server. In such an example, the customizable block data maycomprise a plurality of block arrays defined by the ACME CustomerService application developer. Each block array is associated with arespective block and comprises a plurality of element values. Eachelement value is further associated with an element attribute defininghow the element should be rendered within the message UI. For example,the ACME Customer Service application developer may define an actionblock having button elements with different color and different actiontext displayed on the button. As shown in FIG. 4, the action block 408may comprise different button elements with a first action text (e.g.,“Take It”) and a second action text (e.g., “Quick Reply”) based on thedesign of the ACME Customer Service application developer. Similarly,the action block 408 may comprise button elements with different color.

Finally, the method 500 further continues with rendering the message UIwithin the group-based communication interface based on the customizableblock configuration and on the customizable block data (507).

FIG. 6 illustrates an exemplary message UI building and renderingprocess executed by a client device 101A-101N, a group-basedcommunication server 106, and an external application server 108according to one embodiment of the present disclosure.

An external application server (e.g., external application server 108shown in FIG. 1) may be configured to transmit user message data to agroup-based communication server (e.g., group-based communication server106 shown in FIG. 1) (601). The group-based communication server 106 mayparse the user message data to identify a message UI triggering event(602). Afterwards, the group-based communication server 106 maydetermine if a message UI triggering event is identified among the usermessage data (603). In circumstances where the message UI triggeringevent is identified among the user message data, the group-basedcommunication server 106 may further determine a customizable blockconfiguration to define the message UI that is rendered within thegroup-based communication interface (604). In embodiments, thecustomizable block configuration may comprise multiple blocks, whereeach block may comprise a plurality of elements. The group-basedcommunication server 106 may be configured to transmit a customizableblock request to the external application server (e.g., externalapplication server 108 shown in FIG. 1) (605). In embodiments, thecustomizable block request may comprise a plurality of block types,where each block type is associated with a respective block within thecustomizable block configuration. The external application server 108may be configured to transmit a customizable block data in response tothe customizable block request (606). In embodiments, the customizableblock data may comprise a plurality of block arrays, where each block isassociated with a respective block type and comprises a plurality ofelement values. In embodiments, each element value is associated with anelement attribute indicating how an element is rendered within thegroup-based communication interface. The group-based communicationserver 106 may render, on the client device (e.g., client devices101A-101N shown in FIG. 1), the message UI within the group-basedcommunication interface based on the customizable block configurationand on the customizable block data (607).

Additional Implementation Details

Although an example processing system has been described in FIG. 2,implementations of the subject matter and the functional operationsdescribed herein can be implemented in other types of digital electroniccircuitry, or in computer software, firmware, or hardware, including thestructures disclosed in this specification and their structuralequivalents, or in combinations of one or more of them.

Embodiments of the subject matter and the operations described hereincan be implemented in digital electronic circuitry, or in computersoftware, firmware, or hardware, including the structures disclosed inthis specification and their structural equivalents, or in combinationsof one or more of them. Embodiments of the subject matter describedherein can be implemented as one or more computer programs, i.e., one ormore modules of computer program instructions, encoded on computerstorage medium for execution by, or to control the operation of,information/data processing apparatus. Alternatively, or in addition,the program instructions can be encoded on an artificially-generatedpropagated signal, e.g., a machine-generated electrical, optical, orelectromagnetic signal, which is generated to encode information/datafor transmission to suitable receiver apparatus for execution by aninformation/data processing apparatus. A computer storage medium can be,or be included in, a computer-readable storage device, acomputer-readable storage substrate, a random or serial access memoryarray or device, or a combination of one or more of them. Moreover,while a computer storage medium is not a propagated signal, a computerstorage medium can be a source or destination of computer programinstructions encoded in an artificially-generated propagated signal. Thecomputer storage medium can also be, or be included in, one or moreseparate physical components or media (e.g., multiple CDs, disks, orother storage devices).

The operations described herein can be implemented as operationsperformed by an information/data processing apparatus oninformation/data stored on one or more computer-readable storage devicesor received from other sources.

The term “data processing apparatus” encompasses all kinds of apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing. The apparatus can includespecial purpose logic circuitry, e.g., an FPGA (field programmable gatearray) or an ASIC (application-specific integrated circuit). Theapparatus can also include, in addition to hardware, code that createsan execution environment for the computer program in question, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more of them.The apparatus and execution environment can realize various differentcomputing model infrastructures, such as web services, distributedcomputing and grid computing infrastructures.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor information/data (e.g., one or more scripts stored in a markuplanguage document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub-programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described herein can be performed by oneor more programmable processors executing one or more computer programsto perform actions by operating on input information/data and generatingoutput. Processors suitable for the execution of a computer programinclude, by way of example, both general and special purposemicroprocessors, and any one or more processors of any kind of digitalcomputer. Generally, a processor will receive instructions andinformation/data from a read-only memory or a random access memory orboth. The essential elements of a computer are a processor forperforming actions in accordance with instructions and one or morememory devices for storing instructions and data. Generally, a computerwill also include, or be operatively coupled to receive information/datafrom or transfer information/data to, or both, one or more mass storagedevices for storing data, e.g., magnetic, magneto-optical disks, oroptical disks. However, a computer need not have such devices. Devicessuitable for storing computer program instructions and information/datainclude all forms of non-volatile memory, media and memory devices,including by way of example semiconductor memory devices, e.g., EPROM,EEPROM, and flash memory devices; magnetic disks, e.g., internal harddisks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described herein can be implemented on a computer having adisplay device, e.g., a CRT (cathode ray tube) or LCD (liquid crystaldisplay) monitor, for displaying information/data to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

Embodiments of the subject matter described herein can be implemented ina computing system that includes a back-end component, e.g., as aninformation/data server, or that includes a middleware component, e.g.,an application server, or that includes a front-end component, e.g., aclient computer having a graphical user interface or a web browserthrough which a user can interact with an implementation of the subjectmatter described herein, or any combination of one or more suchback-end, middleware, or front-end components. The components of thesystem can be interconnected by any form or medium of digitalinformation/data communication, e.g., a communication network. Examplesof communication networks include a local area network (“LAN”) and awide area network (“WAN”), an inter-network (e.g., the Internet), andpeer-to-peer networks (e.g., ad hoc peer-to-peer networks).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. In someembodiments, a server transmits information/data (e.g., an HTML page) toa client device (e.g., for purposes of displaying information/data toand receiving user input from a user interacting with the clientdevice). Information/data generated at the client device (e.g., a resultof the user interaction) can be received from the client device at theserver.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anydisclosures or of what may be claimed, but rather as descriptions offeatures specific to particular embodiments of particular disclosures.Certain features that are described herein in the context of separateembodiments can also be implemented in combination in a singleembodiment. Conversely, various features that are described in thecontext of a single embodiment can also be implemented in multipleembodiments separately or in any suitable subcombination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular embodiments of the subject matter have been described.Other embodiments are within the scope of the following claims. In somecases, the actions recited in the claims can be performed in a differentorder and still achieve desirable results. In addition, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain implementations, multitasking and parallelprocessing may be advantageous.

CONCLUSION

Many modifications and other embodiments of the disclosures set forthherein will come to mind to one skilled in the art to which thesedisclosures pertain having the benefit of the teachings presented in theforegoing descriptions and the associated drawings. Therefore, it is tobe understood that the disclosures are not to be limited to the specificembodiments disclosed and that modifications and other embodiments areintended to be included within the scope of the appended claims.Although specific terms are employed herein, they are used in a genericand descriptive sense only and not for purposes of limitation.

1. An group-based communication server system for building and renderinga message user interface (UI) within a group-based communicationinterface of a group-based communication system, the server systemcomprising at least one processor and at least one memory includingcomputer program code, the at least one memory and the computer programcode configured to, with the at least one processor, cause the serversystem to: receive, from an external application, user message dataassociated with the group-based communication interface to be renderedto a client user; determine, based on the user message data, acustomizable block configuration to define a message UI that is renderedwithin the group-based communication interface, transmit a customizableblock request to the external application associated with thecustomizable block configuration, receive customizable block data fromthe external application associated with the customizable block request,and transmit, to the client user, data for rendering the message UIwithin the group-based communication interface based on the customizableblock configuration and on the customizable block data.
 2. The serversystem of claim 1, wherein the customizable block configurationcomprises a plurality of blocks, each block comprising a plurality ofelements.
 3. The server system of claim 2, wherein the customizableblock request comprises a plurality of block types, each block typeassociated with a respective block within the customizable blockconfiguration.
 4. The server system of claim 3, wherein the customizableblock data received from the external application comprises a pluralityof block arrays, each block array associated with a respective blocktype and comprising a plurality of element values, wherein each elementvalue is associated with an element attribute.
 5. The server system ofclaim 3, wherein the plurality of block types comprises a text blocktype, a thumbnail block type, a divider block type, an image block type,a video block type, a meta block type, an action block type, a pollblock type, a file block type, or a call block type.
 6. The serversystem of claim 5, wherein at least one of the thumbnail block type, theimage block type, the meta block type, the poll block type, and the fileblock type is associated with an image element, and the image element isassociated with a plurality of image element attributes comprising asize attribute.
 7. The server system of claim 5, wherein at least one ofthe image block type, the meta block type, the action block type, thepoll block type, and the file block type is associated with an imageelement or a text element.
 8. The server system of claim 5, wherein theaction block type is associated with a button element, a dropdown menuelement, or an overflow menu element.
 9. The server system of claim 8,wherein each of the button element, the dropdown menu element, or theoverflow menu element is associated with a plurality of action elementattributes comprising a color attribute or an action text attribute. 10.The server system of claim 5, wherein the call block type is associatedwith a button element.
 11. A method for building and rendering a messageuser interface (UI) within a group-based communication interface of agroup-based communication server system, the method comprising, at theserver system: receiving, from an external application, user messagedata associated with the group-based communication interface to berendered to a client user; determining, based on the user message data,a customizable block configuration to define a message UI that isrendered within the group-based communication interface, transmitting acustomizable block request to the external application associated withthe customizable block configuration, receiving customizable block datafrom the external application associated with the customizable blockrequest, and transmitting, to the client user, data for rendering themessage UI within the group-based communication interface based on thecustomizable block configuration and on the customizable block data. 12.The method of claim 11, wherein the customizable block configurationcomprises a plurality of blocks, each block comprising a plurality ofelements.
 13. The method of claim 12, wherein the customizable blockrequest comprises a plurality of block types, each block type associatedwith a respective block within the customizable block configuration. 14.The method of claim 13, wherein the customizable block data receivedfrom the external application comprises a plurality of block arrays,each block array associated with a respective block type and comprisinga plurality of element values, wherein each element value is associatedwith an element attribute.
 15. The method of claim 13, wherein theplurality of block types comprises a text block type, a thumbnail blocktype, a divider block type, an image block type, a video block type, ameta block type, an action block type, a poll block type, a file blocktype, or a call block type.
 16. The method of claim 15, wherein at leastone of the thumbnail block type, the image block type, the meta blocktype, the poll block type, and the file block type is associated with animage element, and the image element is associated with a plurality ofimage element attributes comprising a size attribute.
 17. The method ofclaim 15, wherein at least one of the image block type, the meta blocktype, the action block type, the poll block type, and the file blocktype is associated with an image element or a text element.
 18. Themethod of claim 15, wherein the action block type is associated with abutton element, a dropdown menu element, or an overflow menu element.19. The method of claim 18, wherein each of the button element, thedropdown menu element, or the overflow menu element is associated with aplurality of action element attributes comprising a color attribute oran action text attribute.
 20. The method of claim 15, wherein the callblock type is associated with a button element.